import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static int findManyTimes(int[] arr){
        int count = 1;
        int temp = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(count > 0){
                if(temp == arr[i]){
                    count++;
                }else {
                    count--;
                }
            }else {
                temp = arr[i];
                count = 1;
            }
        }
        return temp;
    }

    public static void main(String[] args) {
        int[] arr = {2,2,1,1,1,2,2};
        System.out.println(findManyTimes(arr));
    }

    /*
    奇数位于偶数之前
    调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序
    如数组：[1,2,3,4,5,6]
    调整后可能是：[1, 5, 3, 4, 2, 6]
     */
    public static void oldEven(int[] arr){
        int n = arr.length;
        int temp = 0;
        for (int i = 0; i < n-1; i++) {
            for (int j = 0; j < n-1-i; j++) {
                if (arr[j] % 2 == 0 && arr[j + 1]%2 == 1) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }


    /*
    改变原有数组的值
    实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 ,
    并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
     */
    public static void transform(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            arr[i] *=2;
        }
    }


    /*
    二分查找
    给定一个有序整型数组, 实现二分查找
     */
    public static int Binary(int[] arr,int target){
        int left = 0;
        int right = arr.length-1;
        int middle = (left + right)/2;
        while (left <= right){
            if(target < arr[middle]){
                right = middle - 1;
                middle = (left + right)/2;
            } else if (target > arr[middle]) {
                left = middle + 1;
                middle = (left + right)/2;
            }else {
                break;
            }
        }
        return middle;
    }


    /*
    汉诺塔问题
     */
    public static void move(char x,char y){
        System.out.println(x + "-->" + y);
    }
    public static void Hanoi(int n,char a,char b,char c){
        if(n == 1){
            move(a,c);
        }else {
            Hanoi(n-1,a,c,b);
            move(a,c);
            Hanoi(n-1,b,a,c);
        }
    }
    public static void main1(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入盘子的个数：");
        int n = scanner.nextInt();
        System.out.println("移动盘子的顺序如下：");
        Hanoi(n,'A','B','C');
        scanner.close();
    }

    /*
    两数之和
    给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那 两个 整数，并返回它们的数组下标
    你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现
    你可以按任意顺序返回答案
    示例 1：
    输入：nums = [2,7,11,15], target = 9
    输出：[0,1]
    解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。
     */
    public static int[] searchForSum(int[] arr,int target){
        int[] tar = new int[2];
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if(arr[i]+arr[j] == target && i != j){
                    tar[0] = j;
                    tar[1] = i;
                }
            }
        }
        return tar;
    }
    public static void main2(String[] args) {
        int[] nums = {2,3,4,5};
        int target = 9;
        System.out.println(Arrays.toString(searchForSum(nums,target)));
    }


    /*
    给你一个整数数组 arr，请你判断数组中是否存在连续三个元素都是奇数的情况：如果存在，请返回 true ；否则，返回 false 。
    示例 1：
    输入：arr = [2,6,4,1]
    输出：false
    解释：不存在连续三个元素都是奇数的情况。
    示例 2：
    输入：arr = [1,2,34,3,4,5,7,23,12]
    输出：true
    解释：存在连续三个元素都是奇数的情况，即 [5,7,23] 。
     */
    public static boolean judgeOldEven(int[] arr){
        boolean flg = false;
        for (int i = 1; i < arr.length - 1; i++) {
            if(arr[i]%2 == 1&&arr[i-1]%2 == 1&&arr[i+1]%2 == 1){
                flg = true;
                break;
            }
        }
        return flg;
    }

    /*
    只出现一次的数
    给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
    示例 1:
    输入: [2,2,1]
    输出: 1
    示例 2:
    输入: [4,1,2,1,2]
    输出: 4
     */
    public static int searchForTime(int[] arr){
        int[] count = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if(arr[i] == arr[j] && i != j){
                    count[i] = 2;
                    count[j] = 2;
                }
            }
        }

        int k = 0;
        for (k = 0; k < arr.length; k++) {
            if(count[k] == 0){
                break;
            }
        }
        return arr[k];
    }

}